package cn.kduck.code.module.service;

import cn.kduck.core.service.ValueMap;

import java.util.Map;

import static cn.kduck.code.module.service.ModuleEntity.ModuleEntityFieldEnum.*;

public class ModuleEntity extends ValueMap {
    public ModuleEntity() {
    }

    public ModuleEntity(Map map) {
        if (map != null) {
            super.putAll(map);
        }
    }

    public ModuleEntity(String moduleId,String entityId) {
        setModuleId(moduleId);
        setEntityId(entityId);
    }

    public void setModuleId(String moduleId) {
        super.put(MODULE_ID.getAttrName(), moduleId);
    }

    public String getModuleId() {
        return super.getValueAsString(MODULE_ID.getAttrName());
    }

    public void setEntityId(String entityId) {
        super.put(ENTITY_ID.getAttrName(), entityId);
    }

    public String getEntityId() {
        return super.getValueAsString(ENTITY_ID.getAttrName());
    }

    public void setModuleEntityId(String moduleEntityId) {
        super.put(MODULE_ENTITY_ID.getAttrName(), moduleEntityId);
    }

    public String getModuleEntityId() {
        return super.getValueAsString(MODULE_ENTITY_ID.getAttrName());
    }

    public enum ModuleEntityFieldEnum {
        MODULE_ID("MODULE_ID", "moduleId"), ENTITY_ID("ENTITY_ID", "entityId"), MODULE_ENTITY_ID("MODULE_ENTITY_ID", "moduleEntityId");
        private final String fieldName;
        private final String attrName;

        ModuleEntityFieldEnum(String fieldName, String attrName) {
            this.fieldName = fieldName;
            this.attrName = attrName;
        }

        public String getFieldName() {
            return fieldName;
        }

        public String getAttrName() {
            return attrName;
        }
    }
}
